package co.gov.medellin.ssti.sub.model.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import co.gov.medellin.ssti.sub.common.ConexionFactory;
import co.gov.medellin.ssti.sub.common.excepcion.SUBException;
import co.gov.medellin.ssti.sub.model.dao.ISedeDAO;

import com.cs.beneficios.business.model.SedeVO;

public class SedeDAOImpl extends BaseDAOImpl implements ISedeDAO {

	private static final String SELECT_TODAS_SEDES = "SELECT codigo, upper(nombre) nombre from TCS_BEN_SEDE ORDER BY NOMBRE";

	/**
	 * 
	 * @return
	 */
	public List loadAllSedes() {

		Connection con = null;
		PreparedStatement pstmt = null;
		ResultSet rst = null;

		List sedes = new ArrayList();

		try {
			con = ConexionFactory.getInstance().getConnection();
			pstmt = con.prepareStatement(SELECT_TODAS_SEDES);
			rst = pstmt.executeQuery();
			while (rst.next()) {
				SedeVO sede = new SedeVO();
				sede.setCodeSede(rst.getLong("codigo"));
				sede.setNombre(rst.getString("nombre"));
				sedes.add(sede);
			}
		} catch (SQLException e) {
			SUBException
					.logDebugError(
							"Error inesperado obteniendo la lista de todas las sedes.",
							e);
		} finally {
			close(con, pstmt, rst);
		}
		return sedes;
	}

	/**
	 * Mapea la fila actual de un ResultSet a una Sede.
	 * 
	 * @param resultSet
	 *            El ResultSet con la fila actual para ser mapeada en la Sede.
	 * @return La sede mapeado desde la fila actual del ResultSet.
	 * @throws SQLException
	 *             Si algo falla a nivel de base de datos.
	 */
	private static SedeVO map(ResultSet resultSet) throws SQLException {
		SedeVO pais = new SedeVO();

		pais.setCode(resultSet.getLong("Codigo"));
		pais.setNombre(resultSet.getString("Nombre"));
//		pais.setDepartamentoCiudadCapital(resultSet
//				.getString("DepartamentoCiudadCapital"));
//		pais.setCiudadCapital(resultSet.getString("CiudadCapital"));
//		pais.setFechaConstitucionIndependencia(resultSet
//				.getDate("FechaConstitucionIndependencia"));
//		pais.setArea(resultSet.getInt("Area"));
//		pais.setPoblacion(resultSet.getInt("Poblacion"));
//		pais.setProductoInternoBruto(resultSet.getInt("ProductoInternoBruto"));
//		pais.setIngresoPercapita(resultSet.getInt("IngresoPercapita"));
//		pais.setIdioma(resultSet.getString("Idioma"));
//		pais.setGentilicio(resultSet.getString("Gentilicio"));
//		pais.setMoneda(resultSet.getString("Moneda"));
//		pais.setEliminado(resultSet.getInt("Eliminado"));
//		pais.setFechaCreacion(resultSet.getDate("FechaCreacion"));
//		pais.setFechaModificacion(resultSet.getDate("FechaModificaci\u00F3n"));
//		pais.setFechaEliminacion(resultSet.getDate("FechaEliminacion"));

		return pais;
	}

}
